package com.xdf.wxbebarrel.utils;

import com.xdf.wxbebarrel.model.UserMill;
import com.xdf.wxbebarrel.model.Whitefhbilldraft;
import com.xdf.wxbebarrel.model.wxmsgcontent.Deliver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@Component
@Configuration
@EnableScheduling
public class Schedule {

    @Autowired
    private WechatUtils wechatUtils;
//    @Autowired
//    private WhitefhbilldraftService whitefhbilldraftService;
//    @Autowired
//    private UserMillService userMillService;

    // 每7秒检测推送一次成品发货单，24小时不间断
    //@Scheduled(cron = "0/7 * * * * ?")
    public void pushDeliver() throws Exception {
//        List<Whitefhbilldraft> list =  whitefhbilldraftService.selectUnpushed();
//        if( list == null || list.size()<=0 ) return;// 如果没有待推送的成品发货数据则退出不继续
//        String mill = "友辰织造";
//        List<UserMill> userMillList = userMillService.selectPushdeliverUsers(mill);
//        List<String> openIds = new ArrayList<>();
//        for(UserMill item:userMillList){
//            String openId = Optional.ofNullable(item.getOpen_id()).orElse("");
//            openIds.add(openId);
//        }
//
//        for(Whitefhbilldraft item:list){// 遍历所有未发货的数据推送微信模板消息
//            if( item == null ) continue;// 如果为空对象继续下一次循环
//
//            // 将发货单数据转换为推送模板消息的内容对象
//            Deliver msgContent = whitefhbilldraftService.getWxMsgContent(item);
//            // 传入推送的消息内容对象和接受消息的微信openid构成的集合
//            wechatUtils.pushMsgDeliver(msgContent,openIds);
//
//            // 除非上面推送过程出现异常，其他清空都设置本发货单已经推送
//            // 防止某织造厂没有设置微信接受模板消息，长期下来发货单都没有推送
//            // 一旦某天有第一个微信设置接受了会将所有历史数据都推送过去
//            item.setPushed(true);
//            whitefhbilldraftService.update(item);
//        }
    }
}
